package com.etl.base.admin.controller;

import com.etl.base.config.RulesEngineConfig;
import com.etl.base.urils.JavaSourceComplier;
import com.etl.common.core.domain.R;

import java.util.Map;

/**
 * 规则引擎工具类
 */
public class RulesEnginController {

    //注入规则引擎配置类
    private RulesEngineConfig rulesEngineConfig;

    /**
     * 提交给原文件
     * @return
     */
    public R submitSource(Map map){
        /**
         * map中
         * key   文件名称
         * value java代码
         */

        /**
         * 需要判断是否需要立即执行
         * 要：
         * 不要：
         */

        return R.ok();
    }

    //编译                          规则名称
    public R sourceCompiler(String rulesName){
        //根据指定文件路径 + 配置名称 编译
        JavaSourceComplier.complierFile(rulesEngineConfig.getBaseFileSourcePath()+rulesName);

        //写一个延迟队列 延迟执行 1 ~ 3 分


        //给mq交换机发送信息



        return R.ok();
    }

    //下载                        规则名称               处理端ip
    public void downLoadBinary(String ruleName,String processId){
        //先去通过源文件找到二进制文件目录 找到路径
        String filePath = rulesEngineConfig.getBaseFileBinaryPath() + ruleName;
        /**
         * 通过Response进行响应文件
         * 以IO形式发送
         * 没响应一个文件 需要记住那个服务器
         * 如果有服务器没有下载 需要再次使用mq进行补偿
         * 每次处理端启动 让处理端发送信息 以及把id传来
         * 这个时候对比 规则引擎发送那个处理端没有收到 通过mq的交换机 + 队列 + 消息 单独进行梯形
         */



    }

}
